package amtf

import (
	"reflect"

	"server/global"
	"gorm.io/gorm"
)

var db = global.GVA_DB

func A关联查询(modelPtr interface{}, ID string, args ...string) (err error) {
	relation := "SKUS"
	order := "ASC"
	if len(args) > 0 {
		relation = args[0]
	}
	if len(args) > 1 {
		order = "DESC"
	}
	err = global.GVA_DB.Debug().Where("id = ?", ID).Preload(relation, func(db *gorm.DB) *gorm.DB {
		return db.Order("updated_at " + order)
	}).First(modelPtr).Error

	if err != nil {
		// 处理错误，例如记录日志
		return
	}
	return
}

// modelPtr 是指针，通过 Elem() 来获取指针指向的元素值
func 找反射值(ptr interface{}) reflect.Value {
	// 取得反射值
	value := reflect.ValueOf(ptr)
	// 如果是指针，
	if value.Kind() == reflect.Pointer {
		// 获取指针所指向的实际元素对应的反射值
		value = value.Elem()
	}
	return value
}

// func A增或改(modelPtr interface{}, args ...string) (err error) {
// 	反射值 := 找反射值(modelPtr)
// 	idField := 反射值.FieldByName("ID")
// 	if idField.IsValid() && !idField.IsNil() {
// 		// 获取ID字段的实际值（这里假设ID字段的值可以直接提取使用，具体根据实际类型可能要进一步转换等处理）
// 		idValue := idField.Interface()
// 		// 以下是示例的后续操作，比如根据ID进行数据库更新等，具体根据业务逻辑调整
// 		err = UpdateByID(idValue, modelPtr)
// 	}

// 	relation := "SKUS"
// 	order := "ASC"
// 	if len(args) > 0 {
// 		relation = args[0]
// 	}
// 	if len(args) > 1 {
// 		order = "DESC"
// 	}
// 	err = global.GVA_DB.Debug().Where("id = ?", ID).Preload(relation, func(db *gorm.DB) *gorm.DB {
// 		return db.Order("updated_at " + order)
// 	}).First(modelPtr).Error

// 	if err != nil {
// 		// 处理错误，例如记录日志
// 		return
// 	}
// 	return
// }
